package com.tongcao.cn.validator.annotation;

import com.tongcao.cn.validator.abstracts.ValidatorAdapter;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author:tongcao
 * @Date:2019/4/26 15:26
 * Description:参数规则验证明细项
 */
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Check {

    /**
     * 规则适配器，使用者可以自己写验证规则，继承 Validator并实现相应接口即可
     *
     * @return
     */
    Class<? extends ValidatorAdapter> adapter() default ValidatorAdapter.class;

    /**
     * 比较参数，目前只能设置double类型参数，用于验证数据大小或字符串长度，验证长度时，会把比较double数据转为int类型
     *
     * @return
     */
    double[] v() default {};

    Class<? extends Enum> c() default Enum.class;


    /**
     * 需要验证的参数名字，不设置按check所在的索引匹配参数
     *
     * @return
     */
    String name() default "";


    /**
     * 错误编码
     *
     * @return
     */
    String errorCode() default "0";

    /**
     * 错误内容
     *
     * @return
     */
    String message() default "";

    /**
     * I18N国际化编码
     *
     * @return
     */
    String i18nCode() default "";
}
